package com.atguigu.lease.web.admin.custom.converter;

import com.atguigu.lease.model.enums.ItemType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

/**
 * 字符串转换枚举的转换器
 *
 * @Author mr.luo
 * @Date 22 5月 2025 20:41
 */
//@Component
public class StringTransformationEnum implements Converter<String, ItemType> {

    /**
     * 转换方法
     * 使用基础的Converter转换类型，枚举类型跟多，这个只能处理ItemType类型的枚举
     * 通用性太差，所以要使用一个ConverterFactor优化
     * 这个适用于一个枚举类型
     * @param code 枚举的code
     * @return 枚举实例
     */
    @Override
    public ItemType convert(String code) {
        // 获取所有的枚举实例
        ItemType[] values = ItemType.values();
        //获取所有枚举实例的第二种获取方式
//        ItemType[] enumConstants = ItemType.class.getEnumConstants();
        for (ItemType value : values) {
            if (value.getCode().equals(Integer.valueOf(code))) {
                return value;
            }
        }
        throw new IllegalArgumentException("没有此枚举类型");
    }
}
